home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / LINUX / PKT_CLS.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  2KB  |  147 lines

  1. #ifndef __LINUX_PKT_CLS_H
  2. #define __LINUX_PKT_CLS_H
  3.  
  4. struct tc_police
  5. {
  6.     __u32            index;
  7.     int            action;
  8. #define TC_POLICE_UNSPEC    (-1)
  9. #define TC_POLICE_OK        0
  10. #define TC_POLICE_RECLASSIFY    1
  11. #define TC_POLICE_SHOT        2
  12.  
  13.     __u32            limit;
  14.     __u32            burst;
  15.     __u32            mtu;
  16.     struct tc_ratespec    rate;
  17.     struct tc_ratespec    peakrate;
  18. };
  19.  
  20. enum
  21. {
  22.     TCA_POLICE_UNSPEC,
  23.     TCA_POLICE_TBF,
  24.     TCA_POLICE_RATE,
  25.     TCA_POLICE_PEAKRATE,
  26.     TCA_POLICE_AVRATE,
  27.     TCA_POLICE_RESULT
  28. #define TCA_POLICE_RESULT TCA_POLICE_RESULT
  29. };
  30.  
  31. #define TCA_POLICE_MAX TCA_POLICE_RESULT
  32.  
  33. /* U32 filters */
  34.  
  35. #define TC_U32_HTID(h) ((h)&0xFFF00000)
  36. #define TC_U32_USERHTID(h) (TC_U32_HTID(h)>>20)
  37. #define TC_U32_HASH(h) (((h)>>12)&0xFF)
  38. #define TC_U32_NODE(h) ((h)&0xFFF)
  39. #define TC_U32_KEY(h) ((h)&0xFFFFF)
  40. #define TC_U32_UNSPEC    0
  41. #define TC_U32_ROOT    (0xFFF00000)
  42.  
  43. enum
  44. {
  45.     TCA_U32_UNSPEC,
  46.     TCA_U32_CLASSID,
  47.     TCA_U32_HASH,
  48.     TCA_U32_LINK,
  49.     TCA_U32_DIVISOR,
  50.     TCA_U32_SEL,
  51.     TCA_U32_POLICE,
  52. };
  53.  
  54. #define TCA_U32_MAX TCA_U32_POLICE
  55.  
  56. struct tc_u32_key
  57. {
  58.     __u32        mask;
  59.     __u32        val;
  60.     int        off;
  61.     int        offmask;
  62. };
  63.  
  64. struct tc_u32_sel
  65. {
  66.     unsigned char        flags;
  67.     unsigned char        offshift;
  68.     unsigned char        nkeys;
  69.  
  70.     __u16            offmask;
  71.     __u16            off;
  72.     short            offoff;
  73.  
  74.     short            hoff;
  75.     __u32            hmask;
  76.  
  77.     struct tc_u32_key    keys[0];
  78. };
  79.  
  80. /* Flags */
  81.  
  82. #define TC_U32_TERMINAL        1
  83. #define TC_U32_OFFSET        2
  84. #define TC_U32_VAROFFSET    4
  85. #define TC_U32_EAT        8
  86.  
  87. #define TC_U32_MAXDEPTH 8
  88.  
  89.  
  90. /* RSVP filter */
  91.  
  92. enum
  93. {
  94.     TCA_RSVP_UNSPEC,
  95.     TCA_RSVP_CLASSID,
  96.     TCA_RSVP_DST,
  97.     TCA_RSVP_SRC,
  98.     TCA_RSVP_PINFO,
  99.     TCA_RSVP_POLICE,
  100. };
  101.  
  102. #define TCA_RSVP_MAX TCA_RSVP_POLICE
  103.  
  104. struct tc_rsvp_gpi
  105. {
  106.     __u32    key;
  107.     __u32    mask;
  108.     int    offset;
  109. };
  110.  
  111. struct tc_rsvp_pinfo
  112. {
  113.     struct tc_rsvp_gpi dpi;
  114.     struct tc_rsvp_gpi spi;
  115.     __u8    protocol;
  116.     __u8    tunnelid;
  117.     __u8    tunnelhdr;
  118. };
  119.  
  120. /* ROUTE filter */
  121.  
  122. enum
  123. {
  124.     TCA_ROUTE4_UNSPEC,
  125.     TCA_ROUTE4_CLASSID,
  126.     TCA_ROUTE4_TO,
  127.     TCA_ROUTE4_FROM,
  128.     TCA_ROUTE4_IIF,
  129.     TCA_ROUTE4_POLICE,
  130. };
  131.  
  132. #define TCA_ROUTE4_MAX TCA_ROUTE4_POLICE
  133.  
  134.  
  135. /* FW filter */
  136.  
  137. enum
  138. {
  139.     TCA_FW_UNSPEC,
  140.     TCA_FW_CLASSID,
  141.     TCA_FW_POLICE,
  142. };
  143.  
  144. #define TCA_FW_MAX TCA_FW_POLICE
  145.  
  146. #endif
  147.